<?php
/**
 *  Yz_Descriptor_Interface: Manage the description of Item_Interface objects
 *
 *  The description is a hash of item's property names (as keys) and some associated information, such as localized titles or availability for data i/o operations
 */
interface Yz_Descriptor_Interface
{

    /**
     *  prepare a hash of field names => field clauses for the given action
     *  @param Yz_Action_Interface $action
     *  @return Yz_Hash
     */
#    public function forAction(Yz_Action_Interface $action);

    /**
     *  get an existing descriptor by its item's class name
     *  @param string $name
     *  @return Yz_Descriptor_Interface|null
     */
    #public static function fetchByName($name);

    /**
     *  create a descriptor from values and store it by its item's class name
     *  @param string $name
     *  @param Yz_Hash
     *  @return Yz_Descriptor_Interface
     */
    #public static function create($name, $values);

}
